#include <iostream>
using namespace std;
void main()
{
int dag_antal, dagspris;
cout << "Antal dagar? ";
cin >> dag_antal;
cout << "Pris per dag?";
cin >> dagspris;
cout << "Totalt pris: "
<< dag_antal * dagspris <<
endl;
char end;
cout << "Tryck valfri char -
end";
cin >> end;
}
#include <iostream>
using namespace std;
void main()
{
int dag_antal, dagspris, tot_pris;
const skatt = 10;
double kurs;
cout
<< "Ange antal dagar och pris per dag: ";
cin >> dag_antal >> dagspris;
cout << "Växlingskurs?";
cin >> kurs;
tot_pris = skatt + dagspris * dag_antal;
cout << "Totalt pris: "
<< tot_pris << " euro"
<< "(" <<
tot_pris * kurs << " kr) " << endl;
char end;
cout
<< "Q = avsluta";
cin >>
end;
}
#include <iostream>
#include <iomanip>
using namespace std;
void main()
{
int dag_antal, dagspris, tot_pris;
const skatt = 10;
double kurs;
cout << "Ange antal dagar och
pris per dag: ";
cin >> dag_antal >> dagspris;
cout << "Växlingskurs?";
cin >> kurs;
tot_pris = skatt + dagspris * dag_antal;
cout << "Totalt pris: "
<< tot_pris << " euro"
<< setiosflags(ios::fixed)
<< setprecision(2)
<< "(" <<
tot_pris * kurs << " kr) " << endl;
char end;
cout
<< "Q = avsluta";
cin >>
end;
}
#include <iostream>
#include <iomanip>
using namespace std;
void main()
{
int antal;
double
per_st, exkl_moms, inkl_moms, moms;
const double moms_procent = 25.0;
cout << "Antal enheter?:";
cin >> antal;
cout << "Pris per enhet? ";
cin >> per_st;
exkl_moms =
per_st * antal;
moms = exkl_moms
* moms_procent / 100;
inkl_moms =
exkl_moms + moms;
cout << endl <<
"FAKTURA" << endl
<<"======" << endl <<
"Antal enheter:" << setw(9)
<< antal << endl <<
setprecision(2) <<
setiosflags(ios::fixed) <<
"Pris per enhet:" <<
setw(8) << per_st << endl <<
"Totalt pris:" << setw(11)
<< inkl_moms << endl <<
"Varav moms:" << setw(12)
<< moms << endl;
char end;
cout
<< endl << endl;
cout << "Q = avsluta";
cin >> end;
}
#include <iostream>
#include <iomanip>
using namespace std;
void main()
{
int antal;
double
per_st, exkl_moms, inkl_moms, moms;
const double moms_procent = 25.0;
cout << "Antal enheter?:";
cin >> antal;
cout << "Pris per enhet? ";
cin >> per_st;
exkl_moms =
per_st * antal;
moms =
exkl_moms * moms_procent / 100;
inkl_moms =
exkl_moms + moms;
cout << endl <<
"FAKTURA" << endl
<<"======" << endl <<
"Antal enheter:" << setw(9)
<< antal << endl <<
setprecision(2) <<
setiosflags(ios::fixed) <<
"Pris per enhet:" <<
setw(8) << per_st << endl <<
"Totalt pris:" << setw(11)
<< inkl_moms << endl <<
"Varav moms:" << setw(12)
<< moms << endl;
char end;
cout
<< endl << endl;
cout << "Q = avsluta";
cin >> end;
}
#include <iostream>
#include <iomanip>
#include "iodos.h"
using namespace std;
void main()
{
dos_console(); //för att få svenska
bokstäver
int antal;
double
per_st, pris, rabatt;
const int rabatt_procent = 10, grans = 1000;
cout << "Köpta antal enheter?
"; cin >> antal;
cout << "Pris per enhet? ";
cin >> per_st;
pris = per_st * antal;
if(pris > grans)
{
rabatt = pris * rabatt_procent/100;
pris -=rabatt;
}
cout << "Priset blir: "
<< fixed << setprecision(2) <<
pris << endl;
char a;
cout << "Tryck bokstav eller
siffra = avsluta" << endl;
cin >> a;
}
#include <iostream>
#include <iomanip>
#include <cmath>
#include "iodos.h"
using namespace std;
void main()
{
dos_console();
double
belopp, ranta;
int n;
cout << "Insatt belopp?: "
; cin >> belopp;
cout << "Ränta? "; cin
>> ranta;
cout << "Antal år? "; cin >> n;
cout << setprecision(2) <<
setiosflags(ios::fixed)
<< "Kapitalet blir: "
<< belopp * pow(1 + ranta/100, n);
char a;
cout << endl << "Siffra
eller bokstav - avslutar";
cin >> a;
}
#include <iostream>
#include <iomanip>
#include
"iodos.h"
using namespace std;
void main()
{
dos_console();
int antal_dagar = 1;
double dagslon = 0.01, totalt_belopp =
0.01;
const double onskat = 1000000.0;
while(totalt_belopp < onskat)
{
antal_dagar++;
dagslon *= 2;
totalt_belopp +=dagslon;
}
cout << "Du blir miljonär efter
" << antal_dagar << " dagar"
<< endl;
char a;
cout << "Tryck bokstav eller
siffra för att avsluta" << endl;
cin
>> a;
}
#include <iostream>
#include <iomanip>
#include <cmath>
#include "iodos.h"
using namespace std;
/* förutsättning:
MATEMATISK SERIE
1/1*1 - 1/2*2 +
1/3*3 - 1/4*4 + 1/5*5 ........
*/
void main()
{
dos_console();
double
summan = 0, nasta_term = 1, tecknet = 1;
int k = 1;
const
antal_decimaler = 5;
const double
epsilon = 1e-6;
while
(fabs(nasta_term) >= epsilon)
{
summan += nasta_term; // lägg till
nästa term till summan
k++; // öka nämnaren med ett
tecknet = -tecknet;// växlar från +
till - varannan gång
nasta_term = tecknet/(k * k); //räkna
ut nästa term
}
cout << "Summan blir: "
<< setprecision(antal_decimaler)
<< summan << endl;
char a;
cout << "Tryck valfri tangent
för att avsluta" << endl;
cin >> a;
}
include <iostream>
#include <iomanip>
#include "iodos.h"
using namespace std;
void main()
{
dos_console();
double tal, max_tal = -1, sum = 0;
int n = 0;
cout << "Ctrl-Z markerar slut på
indata eller 0" << endl;
cout << "Skriv in olika tal -
programmet sorterar ut det största";
while (cin >> tal) //om sant - ett
tal matats in
{
sum +=tal;
n++;
if(tal > max_tal)
max_tal = tal;
if(tal == 0)
break;
}
cout << "Största talet är: " << max_tal << endl;
cout << "Medelvärdet är: "
<< sum/n << endl;
char a;
cout << "Tryck tangent för att
avsluta" << endl;
cin >> a;
}
#include <iostream>
#include <cmath>
#include "iodos.h"
using namespace std;
void main()
{
dos_console();
double a, b,
c;
cout
<< "BERÄKNING AV HYPOTENUSAN" << endl;
cout <<
"========================" << endl << endl;
while(true) //samma som while(1) - alltid
sant
{
cout << "Ange kateternas
längder. "
<< "Avsluta med ett
negativt tal. " << endl;
cin
>> a;
if(a<= 0)
break;
cin
>> b;
if(b
<= 0)
break;
c =
sqrt(a * a + b* b);
cout << "Hypotenusan har längden
" << c << endl;
}
char ch;
cout << "Mata in något för att
avsluta" << endl;
cin
>> ch;
}
#include
<iostream>
#include <cmath>
#include "iodos.h"
using namespace std;
void main()
{
dos_console();
double a, b,
c;
cout
<< "BERÄKNING AV HYPOTENUSAN" << endl;
cout
<< "========================" << endl << endl;
while(true) //samma som while(1) - alltid
sant
{
cout << "Ange kateternas
längder. "
<< "Avsluta med Ctrl-z.
" << endl;
if(!(cin >> a)) //om inte a har
matats in
break;
if(!(cin
>> b))
break;
c = sqrt(a * a + b* b);
cout << "Hypotenusan har
längden " << c << endl;
}
}
#include "iodos.h"
#include <iostream>
#include <iomanip>
using namespace std;
main()
{
dos_console();
const
int maxantal=100;
const float
grans=50000., pro1=0.1, pro2=0.15;
float tab[maxantal], belopp, arvode;
int
i, nr;
// Nollställ tabellen
for (i=0; i<maxantal; i++)
tab[i] = 0;
// Läs in försäljningsuppgifter
while(cin >> nr && cin
>> belopp)
{
if (nr <
1 || nr > maxantal || belopp < 0)
cout << "Felaktiga indata"
<< endl;
else
tab[nr-1] += belopp;
}
// Skriv sammanställning
cout << endl
<< "Nummer Belopp
Arvode" << endl
<< "====== ======
======" << endl;
for (i=0; i<maxantal; i++)
{
if (tab[i]
> 0)
{
if
(tab[i] <= grans)
arvode
= pro1 * tab[i];
else
arvode
= pro1*grans + pro2*(tab[i]-grans);
cout
<< setw(4) << (i+1)
<< setprecision(0) <<
setiosflags(ios::fixed)
<< setw(13) << tab[i]
<< setw(10) << arvode
<< endl;
}
}
}
#include "iodos.h"
#include
<iostream>
using namespace
std;
void main()
{
dos_console();
int n =40; //n = tal i fältet
int temp;
int f[] = { 1, 5
,7,8,9,12,14,15,16,65,76,86,43,75,97,97,86,54,43
,56,76,8,9,34,3,2,3,5,1,9,23,235,235,234,5632,5423,11,2,3,2,1,
578,87,845,83,15,73,623,467};
cout << "SORTERINGSALGORITM"
<< endl;
cout << "=================="
<< endl << endl;
//Sortera fältet
for (int tal = 0; tal < n; tal++)
{
//leta reda på minsta talen bland nr
k till n-1
int minsta = tal;
for(int i = tal+1; i< n; i++)
if(f[i] < f[minsta])
minsta= i;
//låt talen nr tal och minsta byta
plats
temp = f[tal];
f[tal] = f[minsta];
f[minsta] = temp;
}
//Skriv ut det sorterade fältet
for(int j = 0; j < n; j++)
cout << f[j] << " " ;
}
#include "iodos.h"
#include <iostream>
using namespace std;
void main()
{
dos_console();
double prod = 1;
int n;
cout << "Detta program skriver
ut FAKULTETEN av n tal" <<
endl
<<"======================================" <<
endl << endl << "Skriv
antal tal: ";
cin >> n;
for(int i = 1; i <= n; i++)
prod *=i;
cout << "Resultatet blir blir:
" << prod;
char ch;
cout << endl << "Mata in
något för att avsluta" << endl;
cin >> ch;
}
#include <iostream>
#include "iodos.h"
using namespace std;
void main()
{
dos_console();
int k, tal;
int n = 40; //fältet innehåller ca 40 element
int f[] =
{2,5,6,1,0,2,8,34,45,76,4,56,89,0,9,67,4,2,34,34,2,1,3,55,
456,654,765,67,12,13,14,15,16,17,18,15,14,16,7564};
cout << "Vilket tal letar du
efter?" << endl;
cin >> tal;
for(k=0; k < n && f[k] != tal;
k++)
;
if(k < n)
cout << "Talet finns på
plats nr " << k + 1 <<endl;
else
cout << "Talet finns inte
" << endl;
char ch;
cin >>
ch;
}
#include <iostream>
#include "iodos.h"
using namespace std;
void main()
{
dos_console();
char teck1 = 'ö'; //enskilda tecken skrivs med enkel
apostrof 'z'
char teck2 = 'å';
char teck3;
char t;
t =teck2 < teck1 ? teck1 : teck2;
cout << t << endl;
teck1 = '\''; //använd backslash för att
skriva enkelt och dubbelt
teck2 = '\\';//citations tecken + backslash
teck3 = '\"';
cout << teck1 << " "
<< teck2 << " " << teck3 << endl;
teck1 = '\123'; //oktalt skrivsätt
teck2
= '\xff';
cout << teck1 << " "
<< teck2 << endl;
}
#include <iostream>
#include "iodos.h"
using namespace std;
void main()
{
dos_console();
char teck;
/* cout << "Skriv ett tecken"
<< endl;
cin >> teck; //läser in ett tecken - ej blanka
cout << "Tecknet var "
<< teck << endl;
while(cin.get(teck)) //läser in ett tecken
även blanka
cout << teck;
*/
//cin.peek() tjuvtittar på nästa tecken som
matas in
//cin.ignore(100,'x') hoppar över 100 st x
bokstäver
//cin >> ws; enklare att använda =
hoppar över alla blanka tecken
while(cin.peek() == ' ' || cin.peek() ==
't' || cin.peek() == '\n')
cin.ignore (); //hoppar över alla vita
tecken, tab och radmatning
}
#include <iostream>
#include "iodos.h"
#include <string>
using namespace std;
void main()
{
dos_console();
char a[9], s[11] = "20 -
- ";
cout << "Ange datum som mm/dd/yy";
cin.getline(a,9);
s[2] = a[6];
s[3] = a[7];
//år
s[5] = a[0];
s[6] = a[1];
//månad
s[8] = a[3];
s[9] = a[4]; //dag
cout << "På svenskt sätt skrivs
det " << s << endl;
}
#include <iostream>
#include "iodos.h"
#include <string>
using namespace std;
void main()
{
dos_console();
string s1 = "subklasser och
superklasser";
string s2 = "klass";
s1.find(s2); //ger värdet 3 string::npos saknas likhet
s1.find("ser"); //ger värdet 7
s1.find('a'); //ger värdet 5
s1.find("som"); // ger
string::npos
int i = s1.find("klass");
if(i == string::npos)
cout << "Finns ej";
else
cout << "Finns i pos "
<< i;
i = s1.find("som");
if(i == string::npos)
cout << "Finns ej";
else
cout << "Finns i pos "
<< i;
}
#include <iostream>
#include "iodos.h"
#include
<cstring> //här måste man använda cstring
using namespace std;
void main()
{
dos_console();
char a[9], s[11] = "20 -
- ";
cout << "Ange datum som mm/dd/yy";
cin.getline(a,9);
strncpy(s+2,
a+6, 2);//år
strncpy(s+5,
a+0, 2);//mån
strncpy(s+8,
a+3, 2);//dag
cout << "På svenskt sätt skrivs
det " << s << endl;
}
#include <iostream>
#include "iodos.h"
#include <cstring>
using namespace std;
void main()
{
dos_console();
char a[4],
b[4] ="xyz", namn[10];
strcpy(a,b); //kopierar b till
a som innehåller xyz
cout << a << endl; //kopierar
även \0 tecknet
strcpy(namn,"Levi"); //farligt -
ingen kontroll om plats finns
cout << namn << endl;
strncpy(a,namn,3); //säkrare att använda
a[4] = '\0'; //för säkerhets skull
cout << a << endl;
string str_namn;
str_namn = namn; //lätt att tilldela
teckenfält till stringvariabel
strcpy(namn, str_namn.c_str ());//omvänt är
svårare - måste använda
// funktionen
s_str()
}
#include <iostream>
#include "iodos.h"
#include <cstring>
using namespace std;
void main()
{
dos_console();
char namn1[20], namn2[20];
cout << "Skriv två namn på var
sin rad \n";
cin.getline(namn1,20);
cin.getline(namn2,20);
if(strcmp(namn1, namn2) < 0)
cout << namn1 << "
kommer först" << endl;
else if (strcmp (namn1, namn2) > 0)
cout << namn2 << "
kommer först" << endl;
else
cout << "Namnen är lika
" << endl;
}
#include <iostream>
#include "iodos.h"
using namespace std;
double medelv(double x, double y)
{
return (x+y)/2;
}
int max(int a, int b)
{
if(a>b)
return
a;
else
return
b;
}
int main()
{
dos_console();
double tal1, tal2, mv;
cout << "Ge två reela tal " << endl;
cin >> tal1 >> tal2;
mv = medelv(tal1,tal2);
cout << "Medelvärdet är "
<< mv << endl;
//anrop av funktionen max
int a,b,c,m;
cout << "Skriv tre tal
(funktionen beräknar största talet)" << endl;
cin >> a >> b >> c;
m =
max(a,b);
m = max(m,c);
cout << m << " är
störst" << endl;
//går även att skriva
cout << max(max(a,b),c) <<
" är störst" << endl;
//här beräknas först det inre funktionsanropet
max(a,b) och därefter
//beräknas det yttre
return 0;
}
#include <iostream>
#include "iodos.h"
#include <vector>
using namespace std;
//beräknar längden av en sträng
int langd(char s[])
{
int n=0;
while(s[n]
!= '\0')
n++;
return n;
}
//beräknar summan av ett fält argumentet n
anger antalet element
int sum(int a[], int n)
{
int s = 0;
for(int i=0;
i<n; i++)
s +=
a[i];
return s;
}
//beräknar summan i en vector
int sumvector(vector<int> a)
{
int s= 0;
for(int i=0;
i<a.size(); i++)
s += a[i];
return s;
}
void main()
{
dos_console();
char a[100]=
"LEVI", b[10] = "X";
//beräkna
längden
cout
<< a << " = " << langd(a) << endl;
cout
<< b << " = " << langd(b) << endl;
int c[10] =
{1,2,3,4,5,6,7,8,9,10};
cout
<< "summa = " << sum(c ,10) << endl;
cout <<"läs in tal";
vector<int> tab;
int tal;
//inläsning av talen i en vector
while(cin >> tal)
tab.push_back(tal);
cout << "Beräkning av summa i en
vector " << sumvector(tab) << endl;
}
#include <iostream>
#include "iodos.h"
#include <vector>
using namespace std;
//binär sökning
int bin_sok(int sokt, int f[], int n)
{
int forsta = 0, sista = n-1;
while(forsta <= sista)
{
int mitten = (forsta + sista)/2;
if(sokt < f[mitten])
sista = mitten-1;
else if(sokt > f[mitten])
forsta = mitten+1;
else //lika
return mitten;
}
return -1;
//inte funnen
}
void main()
{
dos_console();
int a[] = {2,6,8,12,34,45,67,78,123,135,156,200,255,256,267,277,
377,388,400,456};
int svar,s;
cout << "Vilket tal letar du
efter? "; cin >> s;
svar=bin_sok(s,a,20);
if(svar == -1)
cout << "\nTalet finns
ej" << endl;
else
cout << "Talet är element nr
" << svar+1 << endl;
}
#include <iostream>
#include "iodos.h"
#include <cstring>
using namespace std;
void skip_line() //bättre än att använda
cin.ignore
{
while(cin.peek()
!= EOF && cin.get() != '\n')
;
}
int get()
{
int i;
while(!(cin
>> i) || cin.peek() != '\n')
{
cout << "Felaktig parameter
- försök igen";
cin.clear(); //upphäv feltillstånd
// cin.ignore(100, '\n'); //hoppa till
nästa rad
skip_line();
}
return i;
}
void
byt_ut(char s[], char c, char cny)
{
int n= 0;
while(s[n] != '\0')
{
if(s[n] == c)
s[n] = cny;
n++;
}
}
void main()
{
dos_console();
/*
int i;
cout << "Skriv ett heltal";
i= get();
cout << i << endl;
*/
char a[] = "JAG VILL BYTA UT &
& & TILL &&&";
byt_ut (a,'&','%');
cout << a;
}
//main.cpp
#include "iodos.h"
#include <cstring>
#include "simpleio.h"
using namespace std;
void main()
{
dos_console();
char a[30];
double sum
= 0;
int n = 0;
get(a,30);
while(strlen(a) > 0)
{
n++;
sum +=
strlen(a);
get(a,30);
}
put("Antal ord:");
put(n,13);
new_line();
put("Genomsnittlig längd.");
put(sum/n,3,1);
new_line();
}
#include <iostream>
#include <iomanip>
#include "simpleio.h"
using namespace std;
void get(char s[], int n)
{
int i=0;
cin >> ws; //hoppa över vita tecken
while(i<n-1 && cin.peek() !=
' ' && cin.peek() != '\t'
&& cin.peek() != '\n' &&
cin.peek() != EOF)
{
cin >> s[i]; //läs icke vitt
tecken
i++;
}
s[i] = '\0';
}
void skip_line()
//Hoppar fram till nästa inläsningsrad
{
while(cin.peek() != EOF && cin.get() != '\n')
;
}
void put(double x, int fore, int aft)
{
cout
<< setprecision (aft) << setiosflags(ios::fixed)
<<
setw(fore+aft+1) << x << setprecision (6)
<<
resetiosflags(ios::fixed);
}
void put(int i, int width)
{
cout
<< setw(width) << i;
}
void put(char s[])
{
cout
<< s;
}
void new_line()
{
cout << endl;
}
void get(int& i)
{
while(!(cin
>> i) || cin.peek() != '\n')
{
cout << "Felaktigt heltal. Försök
igen";
cin.clear();
skip_line();
}
}
void get(double& y)
{
while(!(cin
>> y) || cin.peek() != '\n')
{
cout << "Felaktigt heltal.
Försök igen";
cin.clear();
skip_line();
}
}
void get(char s[], int i);
void skip_line();
void get(int& i); //referens
void get(double& y); //referens
void put(double x, int fore =1, int aft = 6);
void put(int i, int width =1);
void put(char s[]);
void new_line();
//main.cpp (simpleio)
#include "iodos.h"
#include <cstring>
#include "simpleio.h"
using namespace std;
void main()
{
dos_console();
char a[30];
double sum
= 0;
int n = 0;
get(a,30);
while(strlen(a) > 0)
{
n++;
sum +=
strlen(a);
get(a,30);
}
put("Antal ord:");
put(n,13);
new_line();
put("Genomsnittlig längd.");
put(sum/n,3,1);
new_line();
}
#include <cmath>
#include <iostream>
#include "simpleio.h"
#include "iodos.h"
using namespace std;
// x= -p/2 +- roten
ur p upphöjt till 2/4 - q
void rotter(double p, double q, double& rot1,
double& rot2, bool& ok)
{
double d = p*p/4 -q; //diskriminanten måste
vara större än 0 om
//det skall finnas
rötter
if(d<0)
ok=false;
else
{
rot1 = -p/2 + sqrt(d);
rot2 = -p/2 -
sqrt(d);
}
}
void main()
{
dos_console();
double a, b,
r1, r2;
bool
gick_bra;
put("p?"); get(a);
put("q?"); get(b);
rotter(a,b,r1,r2,gick_bra);
if(gick_bra)
{
put("Rötterna är ");
put(r1,1,2);
put(" och "); put(r2,1,2);
}
else
put("Reella rötter saknas");
}
#include <string>
#include <iostream>
#include "iodos.h"
using namespace std;
bool ord(const
string& s)
{
int i=0;
while(i<s.size())
{
char c
= s[i];
if((c
>= 'a' && c <= 'z') || (c >= 'A' && c<= 'Z') ||
c ==
'å' || c=='ä' || c=='ö' ||c == 'Å' || c=='Ä' || c=='Ö')
i++;
else
return false;
}
return
true;
}
void main()
{
dos_console();
string w;
while (cin
>> w)
if(ord(w))
cout << "Ett ord" <<
endl;
else
cout << "Inget ord"
<< endl;
}
#include <string>
#include <iostream>
#include "iodos.h"
using namespace std;
void
skriv_flera(char c, int ant=2);//default värde-bara i deklarationen
void
skriv_flera(char c , int ant) //ej här
{
for (int i
= 1; i<=ant;i++)
cout
<< c;
}
void main()
{
dos_console();
char a
= '*';
skriv_flera(a,4);
skriv_flera(a); //här blir default värde
}
#include <string>
#include <iostream>
#include "iodos.h"
using namespace std;
//default värde-bara
i deklarationen
void
skriv_flera(char c, int ant=2, bool ny_rad = false);
void
skriv_flera(char c , int ant, bool ny_rad) //ej här
{
for (int i
= 1; i<=ant;i++)
{
cout
<< c;
if(ny_rad)
cout << endl;
}
}
void main()
{
dos_console();
char a
= '*';
skriv_flera(a,4);
skriv_flera('&'); //här blir default
värde
skriv_flera('%',10,true);
}
#include <iostream>
#include "iodos.h"
using namespace std;
int nfak(int n)
{
if(n <=
0)
return
1;
else
return
n*nfak(n-1);
}
void main()
{
int m = 0;
m= nfak(3);
cout << m << endl;
}
#include <iostream>
#include "iodos.h"
using namespace std;
void baklanges( )
{
char c;
if(cin.get(c))
{
baklanges();
cout
<< c;
}
}
void main()
{
baklanges();
}
//Ett program som kollar
om en fras eller ord är ett anagram
//Anagram är ett ord
som kan bilda ett annat ord med samma bokstäver
#include <iostream>
#include "iodos.h"
using namespace std;
bool anagram(char s1[], char s2[])
{
int f1[256], f2[256], i;
//nollställ f1 och f2
for(i=0; i<256;i++)
f1[i] = f2[i] = 0;
//räkna antalet olika tecken i s1
for(i=0; s1[i];i++)
f1[(unsigned char)s1[i]]++; //
//räkna antalet olika tecken i s2
for(i=0; s2[i];i++)
f2[(unsigned char)s2[i]]++;
for(i=0; i<256;i++) //jämför f1 och f2
if(f1[i] != f2[i])
return false;
return true;
}
void main()
{
dos_console();
char ord1[50], ord2[50];
cout << "Kollar om två ord är
ett anagram"
<< " - skriv två ord"
<< endl;
cin >> ord1 >> ord2;
if(anagram(ord1,ord2))
cout << ord1 << " och
" << ord2 << " är ett anagram" << endl;
else
cout << ord1 << " och
" << ord2 << " INGET ANAGRAM" << endl;
}
#include <iostream>
#include "iodos.h"
using namespace std;
void main()
{
dos_console();
cout
<< "sizeof unsigned char: " << sizeof(unsigned char)
<< endl;
cout
<< "sizeof char:
" << sizeof(char) << endl;
cout
<< "sizeof unsigned int:
" << sizeof(unsigned int) << endl;
cout
<< "sizeof int:
" << sizeof(int) << endl;
cout
<< "sizeof long:
" << sizeof(long) << endl;
cout
<< "sizeof float:
" << sizeof(float) << endl;
cout
<< "sizeof double:
" << sizeof(double) << endl;
cout
<< "sizeof long double:
" << sizeof(float) << endl;
cout << endl;
}
/*De fördefinerade
flyttalstyperna float, double long double
#include
<cfloat> innehåller diverse info om de olika standardtyperna f
ör reella tal. Vill
man ha reda på största och minsta tal som kan lagras
och nogrannhet finns
konstanterna DBL_DIG, DBL_MAX,DBL_MIN FLT_DIG,
FLT_MAX, FLT_MIN för
float och LDBL_DIG, LDBL_MAX,LDBL_MIN för long double
*/
#include <iostream>
#include "iodos.h"
#include <cfloat>
using namespace std;
void main()
{
dos_console();
cout << "Noggrannhet för typen
float "
<<FLT_DIG<< endl;
cout << "Minsta tal för typen
float " <<FLT_MIN
<< endl;
cout << "Största tal för typen
float "
<<FLT_MAX<< endl;
cout << "Noggrannhet för typen
double "
<<DBL_DIG<< endl;
cout << "Minsta tal för typen
double " <<DBL_MIN
<< endl;
cout << "Största tal för typen
double "
<<DBL_MAX<< endl;
cout << "Noggrannhet för typen
long double " <<LDBL_DIG<< endl;
cout << "Minsta tal för typen
long double " <<LDBL_MIN
<< endl;
cout << "Största tal för typen
long double " <<LDBL_MAX<< endl;
}
#include <iostream>
#include "iodos.h"
using namespace std;
//int sum(int a[],
int n) //samma som nedanstående
int sum(int *a, int
n) //*a är en pekare till fältet
{
int s =0;
for(int *ip
= a; ip < a+n; ip++)
s += *ip;
return s;
}
int
sum_rekursivt(int *a, int n) //*a är en pekare till fältet
{
if(n<=0)
return
0;
else
return
*a + sum_rekursivt(a+1,n-1);
}
void main()
{
dos_console();
int f[10];
int* pf;
pf = f;
for(int i =
0;i<10;i++)
f[i] = i+1;
//detta är precis
lika
cout << f[1] <<endl; //element nr 1 som vanligt
cout << *(pf+1) <<
endl;//pekare till första elementet
cout << 1[f] << endl; //??
cout << *(1+f) << endl;
//eftersom f är ett fält är f en pekare
cout <<"Med pekare"
<< endl;
//ökar alla elementen i fältet f med 10 via
pekare
for(int *p = f; p<f+10; p++)
{
*p += 10;
cout << "pekaren p har
adressen " << p <<
" och innehåller "
<< *p <<
endl;
}
//
cout << "Exempel summa " <<sum(f,10) <<
endl;
cout << "Exempel summa "
<<sum(f,sizeof f/sizeof f[0]) << endl;//bättre
cout << "Summera rekursivt
" << sum_rekursivt(f,sizeof f/sizeof f[0])
<< endl;
}
#include
<iostream>
#include "iodos.h"
using namespace std;
int *bin_sok(int sokt, int *forsta, int
*sista)
{
if(forsta > sista)//fältet saknar element
return 0;
int *mitten = forsta + (sista-forsta)/2;
if(sokt < *mitten )
return bin_sok(sokt, forsta ,
mitten-1);
else if(sokt > *mitten )
return bin_sok(sokt, mitten +1,
sista);
else //lika
return mitten;
}
void main()
{
dos_console();
int a[] =
{2,6,8,12,34,45,67,78,123,135,156,200,255,256,267,277,
377,388,400,456};
int s;
cout << "Vilket tal letar du
efter? "; cin >> s;
int svar=0;
int *psvar= &svar;
psvar=bin_sok(s,a,a+15);
svar=*psvar;
cout << "Talet är element nr
" << svar << endl;
}
#include <iostream>
#include "iodos.h"
using namespace std;
void main()
{
dos_console();
char namn[] = "Sara";
char *p;
p =namn;
cout << namn << " "
<< p << endl;
char *pnamn = " Svensson"; //kan
man också göra
cout << namn << pnamn << endl;
//vill man skriva ut enskilda tecken måste
man avreferera pekaren
cout << *(p) << pnamn <<
endl; //skriver ut S Svensson
//man kan också ha konstant pekare till
char
const char *q ="Hanna"; //går
inte att ändra det pekaren pekar på
//Det är vanligt att man använder pekare i
stället för indexering
//i text strängar
}
#include <iostream>
#include "iodos.h"
using namespace std;
int charlen(const char *s)//ger längden av s
{
const char *p = s;
while(*p++)//upprepas till man kommer till
'\0' tecknet - while blir
; //false och avslutas
return p-1-s; //dra ifrån 1 för
nolltecknet. Längden blir slutet - början
}
void main()
{
dos_console();
char namn[ ] = "Sara";
cout << charlen(namn) << endl;
char * pn = "Levi Johansson";
cout << charlen(pn) << endl;
}
#include <iostream>
#include "iodos.h"
#include <string>
using namespace std;
void
strcopy(char *s1, const char *s2)
{
while(*s1++ = *s2++)
;
}
void skriv(const
char *pp[], int i) //pp är const pekare till pekare
{ // samma som char
**pp
cout << pp[i] << endl;
}
void main()
{
dos_console();
char
text1[100] = "Levi";
strcopy(text1,"HEJ");
cout
<< text1 << endl;
//ett fält med pekare (array) eller vektor
const
char *medd[4] = {"Meddelande 1", "Detta är meddelande
nummer 2",
"detta är ännu ett
meddelande", "NU ÄR MEDDELANDEN SLUT"};
for(int i =0; i<4; i++)
skriv(medd ,i); //skriver alla meddelanden
skriv (medd,3); //skriver sista meddelandet
}
#include <iostream>
#include "iodos.h"
#include <string>
using namespace std;
void main()
{
dos_console();
double *pd; //en pekare av typen double
pd = new double; //den variabel man
allokerar minne för saknar namn
//enda sättet att komma åt variablen är
via pekaren
//för att tilldela värde till pekaren kan
vi skriva
*pd = 2.5; //initiera det allokerade
minnesutrymmet
int n=10;
int *pi = new int[n]; //fält med pekare
till int
//för att initera fältet kan vi skriva
for(int i=0; i<n; i++)
{
pi[i]=0; //samma som *(p+i)
cout << pi[i]<< endl;
}
//för att radera pekare som skapats med
new
delete [] pd; //obs skrivsättet
//för att radera en enskild pekare delete
p;
}
#include <iostream>
#include "iodos.h"
using namespace std;
void byt(int
&a, int &b) //med referenser
{
int c = a;
a = b;
b= c;
}
void byt2(int *pa, int *pb) //med pekare
{
int c = *pa;
*pa = *pb;
*pb= c;
}
void main()
{
dos_console();
int i = 10,j
= 20;
cout << "Före funktionen byt i =
" << i << " j = " << j << endl;
byt(i,j);
cout << "Efter funktionen byt i
= " << i << " j = " << j << endl;
cout << "Före funktionen byt2 i
= " << i << " j = " << j << endl;
byt2(&i,&j);
cout << "Efter funktionen byt i
= " << i << " j = " << j << endl;
}
#include <iostream>
#include <cmath>
#include "iodos.h"
using namespace std;
double
nollstalle(double (*f)(double), double a, double b,
double eps = 1e-10
);
double f(double x)
{
return x-1;
}
double f2(double x)
{
return 2 * x
* x* x - 3 * x * x - 18*x -8;
}
void main()
{
dos_console();
cout
<< nollstalle (f, 20, 10) << endl;
cout
<< nollstalle (f2, 56 , 1 ) << endl;
}
double nollstalle(double
(*f)(double), double a, double b,
double
eps ) {
if(f(a)
> 0 && f(b) < 0) //byt a och b
{
double
temp = a;
a = b;
b= temp;
}
if(f(a)< 0 && f(b) > 0)
{
cout << "Nollställe saknas
" << endl;
}
//nu gäller f(a) < 0 < f(b)
while(fabs (a-b) < eps)
{
double
xm = (a+b)/2, fm = f(xm);
if(fm
< 0)
a
= xm;
else
if (fm > 0)
b = xm;
else
return xm; // vi råkade hitta
nollstället
}
return (a+b)/2;
}
#include <iostream>
#include <cstring>
#include "iodos.h"
using namespace std;
typedef char
*enum_txt[];
int get_enum(enum_txt tab)
{
char
s[100];
if(cin
>>s){
for(int
k=0; tab[k];k++)
if(strcmp(s, tab[k]) == 0)
return k;
cout << "Fel
indata" << endl;
}
return -1;
}
void main()
{
dos_console();
enum farg {rod, gul,bla,lila,gron,orange};
enum_txt tab1 =
{"röd","gul","blå",0};
enum_txt tab2 =
{"röd","gul","blå","lila","grön","orange",0};
farg f1, f2, blandning;
while(true)
{
cout << "Ange två av färgerna röd gul eller blå"
<< endl;
if((f1=farg(get_enum(tab1)))
< 0 ||(f2=farg(get_enum(tab1))) < 0)
break;
if(f1 ==
rod && f2 == gul || f1 ==gul && f2 == rod)
blandning = orange;
else if (f1 == gul && f2 == bla || f1
==bla && f2 == gul)
blandning = gron;
else if (f1 == rod
&& f2 == bla || f1 ==bla && f2 == rod)
blandning = lila;
else
blandning = f1; //sammafärg
cout << "Färgblandningen
blir " << tab2[blandning] << endl;
}
}
#include <iostream>
#include "iodos.h"
using namespace std;
typedef const char *enum_txt[];
int get_enum(enum_txt tab)
{
char
s[100];
if(cin
>>s){
for(int
k=0; tab[k];k++)
if(strcmp(s, tab[k]) == 0)
return k;
cout << "Fel
indata" << endl;
}
return -1;
}
void main()
{
dos_console();
enum veckodag{mandag, tisdag, onsdag,
torsdag, fredag, lordag, sondag};
enum_txt dag_tab = {"Måndag",
"Tisdag", "Onsdag", "Torsdag",
"Fredag",
"Lördag", "Söndag", 0};
int idag = lordag;
cout << "Idag är det "
<< dag_tab[idag];
cout <<"Vilken veckodag är det
idag?";
idag = veckodag(get_enum(dag_tab));
cout << "Idag är det "
<< dag_tab[idag];
}
#include <iostream>
#include "iodos.h"
using namespace std;
void skriv(int a[][4 ], int rad)
{
for(int i=0; i< rad; i++)
{
for(int j=0;j< 4;j++)
cout << a[i][j] << ' ';
cout
<< endl;
}
}
void main()
{
dos_console();
int m[3][4];
skriv(m,3); //skriver ut en matris med 3
rader
}
#include <iostream>
#include <vector>
#include <iomanip>
#include "iodos.h"
using namespace std;
typedef
vector<double> rad; //vanlig vector
typedef
vector<rad> matris; //matris består av ett antal element rad
void add(matris a,
matris b, matris& c)//c är en utparameter - referensa
{
for(int i=0; i< a.size(); i++)
for(int
j=0;j<a[i].size();j++)
c[i][j] = a[i][j] + b[i][j];
}
void skriv(matris a)
{
for(int
i=0; i< a.size(); i++)
{
for(int j=0;j<a[i].size();j++)
cout << setw(4) <<a[i][j] ;
cout
<< endl;
}
}
void main()
{
dos_console();
matris m;
const int antal_rader =12, antal_kolumner
=10;
m.resize (antal_rader);
for(int j=0;j<antal_rader;j++)
m[j].resize (antal_kolumner);
for(int r=0; r< antal_rader; r++)
for(int k=0; k<antal_kolumner; k++)
m[r][k] = (r+1)*(k+1); //lägger in multiplikationstabellen
skriv(m ); //skriver ut
multiplikationstabellen
}
#include <iostream>
using namespace std;
void main()
{
char a;
cin >>
a;
if(clog.good()) //bool good() ingen av tillståndsflaggorna är satt
cerr << "Strömmen clog är
OK";
if(cin.fail()) //eller if(!cin)
{
cerr << "Inläsningen
misslyckades";
cin.clear();
}
int n=0;
while(!cin.eof())
//OBS Fel
{
cin.get(a);
n++;
}
cout << "Du skrev "
<< n << " tecken" << endl;
n=0;
while(true)
//Korrekt
{
cin.get(a);
if(cin.eof())
break;
n++;
}
cout << "Du skrev "
<< n << " tecken" << endl;
n=0;
while(cin.get(a)) //Enklast och korrekt
n++;
cout << "Du skrev "
<< n << " tecken" << endl;
}
#include <iostream>
#include <fstream>
#include <iomanip>
#include <cstdlib>
#include "iodos.h"
using namespace std;
void main()
{
dos_console();
char namn[100];
char c;
cout << "Vilken fil skall kopieras" <<
endl;
cin >> setw(100) >> namn;
ifstream f1(namn);
if(!f1)
{
cout << "Filen kan ej öppnas
" << endl;
exit(EXIT_FAILURE);
}
cout << "Kopians namn? "
<< endl;
cin >> setw(100) >> namn;
ofstream f2(namn);
if(!f2)
{
cout << "Filen kan ej skapas
" << endl;
exit(EXIT_FAILURE);
}
while(f1.get(c))
f2.put(c);
}
#include <iostream>
#include <fstream>
#include "iodos.h"
using namespace std;
void main()
{
dos_console();
int n = 0;
char c;
ifstream
f1("MY TEXT FILE.cpp");
while(f1.get(c))
{
cout.put(c);
if(c == '\n')
n++;
}
cout << endl << "Filen
består av " << n << " rader" << endl;
}
#include <iostream>
#include <fstream>
#include <iomanip>
#include <cstdlib>
#include "iodos.h"
using namespace std;
void main()
{
dos_console();
char namn[100];
cout << "Vilken fil skall
öppnas" << endl;
cin >> setw(100) >> namn;
ifstream f1(namn);
if(!f1)
{
cout << "Filen kan ej öppnas
" << endl;
exit(EXIT_FAILURE); //EXIT_SUCCESS är
motsvarande
}
//man kan använda rdbuf() som ger en pekare
till filbufferten
//hela bufferten skrivs ut
cout
<< f1.rdbuf();
//kopiera till en annan fil
//f2 <<f1.rdbuf ();
}
#include <iostream>
#include <fstream>
#include <string>
#include "iodos.h"
using namespace std;
void main()
{
dos_console();
cout <<
"TELEFONLISTA" << endl;
ofstream
filut("telefon.txt",ios::app);
string enamn, fnamn, tel;
cout << "Ange efternamn, förnamn
och tel - avsluta med Ctrl-Z" << endl;
while(cin >> enamn && cin
>> fnamn && cin >>
tel)
filut << enamn << "
" << fnamn << " " << tel << endl;
filut.close();
//skriv ut filens innehåll
ifstream
filin("telefon.txt",ios::in);
cout << endl <<
"Telefonlista" << endl;
cout << filin.rdbuf();
}
#include <iostream>
#include <fstream>
#include <cstdio>
#include <string>
#include "iodos.h"
using namespace std;
void main()
{
dos_console();
string
enamn1, fnamn1, tel1;
string
enamn2, fnamn2, tel2;
bool funnen = false;
cout << "Ge efternamn, förnamn
och nytt telefonnummer för"<< endl;
cout
<< "den person som skall ändras" << endl;
cin >> enamn1 >>fnamn1 >>
tel1;
{
ifstream fin("telefon.txt");
ofstream fut("tempfil");
while(fin >> enamn2 && fin
>> fnamn2 && fin >>
tel2)
{
fut << enamn2 << "
" << fnamn2 << " ";
if(enamn1 == enamn2 && fnamn1
== fnamn2)
{
funnen = true;
fut << tel1 << endl;
//skriv nytt telnr
}
else
fut
<< tel2 << endl;
}
}
if(funnen)
{
ifstream
f1("tempfil");
ofstream
f2("telefon.txt");
f2
<< f1.rdbuf();
}
else
cout << "Personen ej
funnen" << endl;
remove("tempfil");
}
#include <iostream>
#include<fstream>
#include "iodos.h"
using namespace std;
void main()
{
dos_console();
ofstream fut("testfil.txt");
fut << "första
raden"<< endl;
fut << "2:dra raden"
<< endl;
fut.seekp(0, ios::beg); //ios::beg
början begin of file
fut <<
"XY";
fut.seekp(5,
ios::cur); // ios::cur aktuell pos
fut <<
'Z';
streampos
pos = fut.tellp();
fut.seekp(0,
ios::end);
fut <<
"Sista raden " << endl;
fut.seekp(pos);
fut << 'W';
fut.close();
//skriv ut hella filen
ifstream fin("testfil.txt");
char c;
while(fin.get(c))
cout
<< c;
//skriv ut slutet av filen igen
fin.clear(); //OBS behövs för att
nollställa eof flaggan
fin.seekg(-10, ios::end);
while(fin.get(c))
cout << c;
}
#include <iostream>
#include<fstream>
#include <cstring>
#include "iodos.h"
using namespace std;
void main()
{
dos_console();
fstream f
("testfil2.txt", ios::in|ios::out|ios::trunc);
//skriver två rader till filen
f << "Detta är första raden
" << endl;
int pos2 = f.tellp();//här börjar rad 2
f<< "Rad nummer 2" <<
endl;
//skriv ut filen på skärmen
f.seekp(0);
char s[100];
while(f.getline(s,100))
cout << s << endl;
f.clear();//nödvändigt efter filslut
//ändra det första ordet till stjärnor
f.seekp(0);
for(int i =1; i <5; i++)
f.put('*');
//skriv ett X mitt på andra raden
f.seekp(pos2);
f.getline(s,
100);
f.seekp(pos2+strlen(s)/2);
f<<'X';
//skriv ut filen på skärmen
f.seekp(0);
cout
<< f.rdbuf();
}